
//引入 User集合的模块
const {
    User,
    validateUser
} = require('../../model/user');

//引入bcrypt 模块
const bcrypt = require('bcrypt');

module.exports = async(req, res,next) => {
    //实施验证
    try {
        await validateUser(req.body)
    } catch (error) {
        //重定向回用户添加界面
        // res.redirect('/admin/user-edit?message='+error.message);
        // return res.redirect(`/admin/user-edit?message=${error.message}`)
        return next(JSON.stringify({path:'/admin/user-edit',message:error.message}))
    }

    //验证数据库中是否已占用email
    let user = await User.findOne({email:req.body.email})
    // res.send(user);
    //如果用户已经存在， email被占用
    if(user){
        //重定向到添加页面
        // return res.redirect(`/admin/user-edit?message=邮箱地址已被占用`)
        return next(JSON.stringify({path:'/admin/user-edit',message:'邮箱地址已被占用'}))
    }

    //对密码进行加密
    // 生成随机字符串
     const salt = await bcrypt.genSalt(10)
     const password =await bcrypt.hash(req.body.password,salt)
    //替换密码
    req.body.password = password;
   
    //将用户信息添加到数据库中
    await User.create(req.body);

    //将页面重定向到用户列表
    res.redirect('/admin/user')
}  



